// 数据预览工具，用于保存和获取最近一次的预览数据

// 存储键名
const PREVIEW_DATA_KEY = 'aichat_data_preview';

// 预览数据类型定义
export interface PreviewData {
  statistics?: Record<string, any>;
  chart_data?: any;
  table_data?: any[];
}

/**
 * 保存预览数据到本地存储
 * @param data 预览数据
 */
export const savePreviewData = (data: PreviewData): void => {
  try {
    const dataToSave = {
      data,
      timestamp: Date.now()
    };
    localStorage.setItem(PREVIEW_DATA_KEY, JSON.stringify(dataToSave));
  } catch (error) {
    console.error('保存预览数据失败:', error);
  }
};

/**
 * 获取最近一次的预览数据
 * @returns 预览数据，如果没有则返回null
 */
export const getPreviewData = (): PreviewData | null => {
  try {
    const storedData = localStorage.getItem(PREVIEW_DATA_KEY);
    if (!storedData) {
      return null;
    }
    
    const parsed = JSON.parse(storedData);
    
    // 检查数据是否过期（超过24小时）
    const now = Date.now();
    const oneDayInMs = 24 * 60 * 60 * 1000;
    if (now - parsed.timestamp > oneDayInMs) {
      // 清除过期数据
      localStorage.removeItem(PREVIEW_DATA_KEY);
      return null;
    }
    
    return parsed.data;
  } catch (error) {
    console.error('获取预览数据失败:', error);
    return null;
  }
};

/**
 * 清除预览数据
 */
export const clearPreviewData = (): void => {
  try {
    localStorage.removeItem(PREVIEW_DATA_KEY);
  } catch (error) {
    console.error('清除预览数据失败:', error);
  }
};